package net.elementsmodcolab; import java.awt.EventQueue; import SevenZip.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLEncoder; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import javax.swing.JButton; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.SpringLayout; import javax.swing.UIManager; import net.elementsmodcolab.launcherData.CodeCore; import net.elementsmodcolab.launcherData.MinecraftLauncher; import javax.swing.JCheckBox; public class LauncherWindow { private JFrame frame; private JTextField textField; private JPasswordField passwordField; public boolean offline = false; public JLabel label; public boolean exists = (new File(CodeCore.getWorkingDir() + "/bin/minecraft.jar")).exists(); public boolean exists1 = (new File(CodeCore.getWorkingDir() + "/bin/lwjgl.jar")).exists(); public boolean exists2 = (new File(CodeCore.getWorkingDir() + "/bin/lwjgl_util.jar")).exists(); public boolean exists3 = (new File(CodeCore.getWorkingDir() + "/bin/jinput.jar")).exists(); public JCheckBox chckbxForceUpdate; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { LauncherWindow window = new LauncherWindow(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public LauncherWindow() { initialize(); } /** * Initialize the contents of the frame. */ private void initialize() { frame = new JFrame(); frame.setBounds(100, 100, 843, 501); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); SpringLayout springLayout = new SpringLayout(); frame.getContentPane().setLayout(springLayout); frame.setTitle("Elements of Insanity Launcher"); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception localException) {} textField = new JTextField(); springLayout.putConstraint(SpringLayout.WEST, textField, 10, SpringLayout.WEST, frame.getContentPane()); springLayout.putConstraint(SpringLayout.SOUTH, textField, -10, SpringLayout.SOUTH, frame.getContentPane()); frame.getContentPane().add(textField); textField.setColumns(10); JLabel lblUsername = new JLabel("Username"); springLayout.putConstraint(SpringLayout.NORTH, lblUsername, 402, SpringLayout.NORTH, frame.getContentPane()); springLayout.putConstraint(SpringLayout.WEST, lblUsername, 10, SpringLayout.WEST, frame.getContentPane()); frame.getContentPane().add(lblUsername); JLabel lblPassword = new JLabel("Password"); springLayout.putConstraint(SpringLayout.NORTH, lblPassword, 402, SpringLayout.NORTH, frame.getContentPane()); springLayout.putConstraint(SpringLayout.WEST, lblPassword, 278, SpringLayout.EAST, lblUsername); springLayout.putConstraint(SpringLayout.SOUTH, lblPassword, 416, SpringLayout.NORTH, frame.getContentPane()); frame.getContentPane().add(lblPassword); passwordField = new JPasswordField(); springLayout.putConstraint(SpringLayout.WEST, passwordField, 336, SpringLayout.WEST, frame.getContentPane()); springLayout.putConstraint(SpringLayout.EAST, passwordField, -177, SpringLayout.EAST, frame.getContentPane()); springLayout.putConstraint(SpringLayout.EAST, textField, -12, SpringLayout.WEST, passwordField); springLayout.putConstraint(SpringLayout.SOUTH, passwordField, -10, SpringLayout.SOUTH, frame.getContentPane()); frame.getContentPane().add(passwordField); JButton btnPlayOffline = new JButton("Play Offline"); btnPlayOffline.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String[] mc = new String[] {CodeCore.getWorkingDir(), "", ""}; MinecraftLauncher.init(mc); } }); springLayout.putConstraint(SpringLayout.NORTH, btnPlayOffline, 0, SpringLayout.NORTH, textField); springLayout.putConstraint(SpringLayout.EAST, btnPlayOffline, -10, SpringLayout.EAST, frame.getContentPane()); frame.getContentPane().add(btnPlayOffline); label = new JLabel(""); springLayout.putConstraint(SpringLayout.WEST, label, 401, SpringLayout.WEST, frame.getContentPane()); springLayout.putConstraint(SpringLayout.SOUTH, label, 0, SpringLayout.SOUTH, lblUsername); frame.getContentPane().add(label); JButton button = new JButton("Login"); springLayout.putConstraint(SpringLayout.EAST, button, -10, SpringLayout.EAST, frame.getContentPane()); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { login(); }}); springLayout.putConstraint(SpringLayout.SOUTH, button, -6, SpringLayout.NORTH, btnPlayOffline); frame.getContentPane().add(button); JScrollPane scrollPane = new JScrollPane(); springLayout.putConstraint(SpringLayout.NORTH, scrollPane, 10, SpringLayout.NORTH, frame.getContentPane()); springLayout.putConstraint(SpringLayout.WEST, scrollPane, 10, SpringLayout.WEST, frame.getContentPane()); springLayout.putConstraint(SpringLayout.SOUTH, scrollPane, -6, SpringLayout.NORTH, lblUsername); springLayout.putConstraint(SpringLayout.EAST, scrollPane, 817, SpringLayout.WEST, frame.getContentPane()); frame.getContentPane().add(scrollPane); JEditorPane editorPane = new JEditorPane(); editorPane.setContentType("text/html"); try { editorPane.setPage("http://eoisupdate.tumblr.com"); } catch (IOException e1) {} editorPane.setEditable(false); scrollPane.setViewportView(editorPane); chckbxForceUpdate = new JCheckBox("Force Update"); springLayout.putConstraint(SpringLayout.SOUTH, chckbxForceUpdate, -6, SpringLayout.NORTH, btnPlayOffline); springLayout.putConstraint(SpringLayout.EAST, chckbxForceUpdate, -7, SpringLayout.WEST, button); frame.getContentPane().add(chckbxForceUpdate); } public void login() { label.setText("Logging In..."); try { label.setText(""); @SuppressWarnings("deprecation") String parameters = "user=" + URLEncoder.encode(textField.getText(), "UTF-8") + "&password=" + URLEncoder.encode(passwordField.getText(), "UTF-8") + "&version=" + 13; String result = CodeCore.excutePost("https://login.minecraft.net/", parameters); if (result == null) { label.setText("Cannot connect to Minecraft.net"); offline = true; return; } if (!result.contains(":")) { if (result.trim().equals("Bad login")) { label.setText("Login failed"); } else if (result.trim().equals("Old version")) { label.setText("Outdated launcher"); } else { label.setText(result); } offline = true; return; } String[] values = result.split(":"); System.out.println("Username: " + values[2]); System.out.println("Session ID: " + values[3]); String[] mc = new String[] {CodeCore.getWorkingDir(), values[2], values[3]}; if (chckbxForceUpdate.isSelected()) { File mcjar = new File(CodeCore.getWorkingDir() + "/bin/minecraft.jar"); File lwjgljar = new File(CodeCore.getWorkingDir() + "/bin/lwjgl.jar"); File jinputjar = new File(CodeCore.getWorkingDir() + "/bin/jinput.jar"); File natives = new File(CodeCore.getWorkingDir() + "/bin/natives.jar.lzma"); File utiljar = new File(CodeCore.getWorkingDir() + "/bin/lwjgl_util.jar"); File elementzip = new File(CodeCore.getWorkingDir() + "/bin/eois.zip"); URL minecraft = new URL("http://s3.amazonaws.com/MinecraftDownload/minecraft.jar"); URL lwjgl = new URL("http://s3.amazonaws.com/MinecraftDownload/lwjgl.jar"); URL jinput = new URL("http://s3.amazonaws.com/MinecraftDownload/jinput.jar"); URL lwjgl_util = new URL("http://s3.amazonaws.com/MinecraftDownload/lwjgl_util.jar"); URL lnatives = new URL("http://s3.amazonaws.com/MinecraftDownload/linux_natives.jar.lzma"); URL wnatives = new URL("http://s3.amazonaws.com/MinecraftDownload/windows_natives.jar.lzma"); URL elements = new URL("http://dl.jphweb.com/emc/latest.zip"); if (CodeCore.isLinux()){ org.apache.commons.io.FileUtils.copyURLToFile(lnatives, natives, 5000, 10000); String[] ex = new String[] {"d", CodeCore.getWorkingDir() + "/bin/natives.jar.lzma", CodeCore.getWorkingDir() + "/bin/linux_natives.jar"}; LzmaAlone.main(ex); } if (CodeCore.isWin()) { org.apache.commons.io.FileUtils.copyURLToFile(wnatives, natives, 5000, 10000); String[] ex = new String[] {"d", CodeCore.getWorkingDir() + "/bin/natives.jar.lzma", CodeCore.getWorkingDir() + "/bin/windows_natives.jar"}; LzmaAlone.main(ex); } org.apache.commons.io.FileUtils.copyURLToFile(minecraft, mcjar, 5000, 10000); org.apache.commons.io.FileUtils.copyURLToFile(lwjgl, lwjgljar, 5000, 10000); org.apache.commons.io.FileUtils.copyURLToFile(jinput, jinputjar, 5000, 10000); org.apache.commons.io.FileUtils.copyURLToFile(lwjgl_util, utiljar, 5000, 10000); org.apache.commons.io.FileUtils.copyURLToFile(elements, elementzip, 5000, 10000); MinecraftLauncher.init(mc); } if (exists && exists1 && exists2 && exists3) { MinecraftLauncher.init(mc); } else { File mcjar = new File(CodeCore.getWorkingDir() + "/bin/minecraft.jar"); File lwjgljar = new File(CodeCore.getWorkingDir() + "/bin/lwjgl.jar"); File jinputjar = new File(CodeCore.getWorkingDir() + "/bin/jinput.jar"); File utiljar = new File(CodeCore.getWorkingDir() + "/bin/lwjgl_util.jar"); File elementzip = new File(CodeCore.getWorkingDir() + "/bin/eois.zip"); File natives = new File(CodeCore.getWorkingDir() + "/bin/natives.jar.lzma"); URL minecraft = new URL("http://s3.amazonaws.com/MinecraftDownload/minecraft.jar"); URL lwjgl = new URL("http://s3.amazonaws.com/MinecraftDownload/lwjgl.jar"); URL jinput = new URL("http://s3.amazonaws.com/MinecraftDownload/jinput.jar"); URL lwjgl_util = new URL("http://s3.amazonaws.com/MinecraftDownload/lwjgl_util.jar"); URL elements = new URL("http://dl.jphweb.com/emc/latest.zip"); URL lnatives = new URL("http://s3.amazonaws.com/MinecraftDownload/linux_natives.jar.lzma"); URL wnatives = new URL("http://s3.amazonaws.com/MinecraftDownload/windows_natives.jar.lzma"); if (CodeCore.isLinux()){ org.apache.commons.io.FileUtils.copyURLToFile(lnatives, natives, 5000, 10000); String[] ex = new String[] {"d", CodeCore.getWorkingDir() + "/bin/natives.jar.lzma", CodeCore.getWorkingDir() + "/bin/linux_natives.jar"}; LzmaAlone.main(ex); } if (CodeCore.isWin()) { org.apache.commons.io.FileUtils.copyURLToFile(wnatives, natives, 5000, 10000); String[] ex = new String[] {"d", CodeCore.getWorkingDir() + "/bin/natives.jar.lzma", CodeCore.getWorkingDir() + "/bin/windows_natives.jar"}; LzmaAlone.main(ex); } org.apache.commons.io.FileUtils.copyURLToFile(minecraft, mcjar, 5000, 10000); org.apache.commons.io.FileUtils.copyURLToFile(lwjgl, lwjgljar, 5000, 10000); org.apache.commons.io.FileUtils.copyURLToFile(jinput, jinputjar, 5000, 10000); org.apache.commons.io.FileUtils.copyURLToFile(lwjgl_util, utiljar, 5000, 10000); org.apache.commons.io.FileUtils.copyURLToFile(elements, elementzip, 5000, 10000); MinecraftLauncher.init(mc); } } catch (Exception e1) {} } public static final void copyInputStream(InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[1024]; int len; while((len = in.read(buffer)) >= 0) out.write(buffer, 0, len); in.close(); out.close(); } }